]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
cleanup: Prefer template strings
authorFlorian Müllner <fmuellner@gnome.org>
Wed, 30 Jan 2019 00:18:24 +0000 (01:18 +0100)
committerFlorian Müllner <florian.muellner@gmail.com>
Fri, 5 Jul 2019 11:32:31 +0000 (11:32 +0000)
Template strings are much nicer than string concatenation, so use
them where possible; this excludes translatable strings and any
strings containing '/' (until we can depend on gettext >= 0.20[0]).

[0] https://savannah.gnu.org/bugs/?50920

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/612

51 files changed:
js/extensionPrefs/main.js
js/gdm/fingerprint.js
js/gdm/loginDialog.js
js/misc/extensionUtils.js
js/misc/fileUtils.js
js/misc/history.js
js/misc/ibusManager.js
js/misc/inputMethod.js
js/misc/objectManager.js
js/misc/systemActions.js
js/misc/util.js
js/misc/weather.js
js/perf/hwtest.js
js/ui/accessDialog.js
js/ui/appDisplay.js
js/ui/appFavorites.js
js/ui/audioDeviceSelection.js
js/ui/calendar.js
js/ui/components/automountManager.js
js/ui/components/autorunManager.js
js/ui/components/networkAgent.js
js/ui/components/polkitAgent.js
js/ui/components/telepathyClient.js
js/ui/environment.js
js/ui/extensionDownloader.js
js/ui/extensionSystem.js
js/ui/focusCaretTracker.js
js/ui/lookingGlass.js
js/ui/magnifier.js
js/ui/magnifierDBus.js
js/ui/main.js
js/ui/messageTray.js
js/ui/mpris.js
js/ui/notificationDaemon.js
js/ui/padOsd.js
js/ui/panel.js
js/ui/popupMenu.js
js/ui/remoteSearch.js
js/ui/runDialog.js
js/ui/screenShield.js
js/ui/scripting.js
js/ui/search.js
js/ui/shellMountOperation.js
js/ui/status/accessibility.js
js/ui/status/dwellClick.js
js/ui/status/keyboard.js
js/ui/status/location.js
js/ui/status/network.js
js/ui/status/power.js
js/ui/status/volume.js
js/ui/tweener.js

index af1ad08d5e25b2c6e499d202e525dcde4f00baf6..f0e604a278cf2b3adcc54b57b543f676fd6c2f85 100644 (file)
@@ -623,7 +623,7 @@ function initEnvironment() {
         },
 
         logError(s) {
-            log('ERROR: ' + s);
+            log(`ERROR: ${s}`);
         },
 
         userdatadir: GLib.build_filenamev([GLib.get_user_data_dir(), 'gnome-shell'])
index e27c7c1b1896455311e5496203ee9bba82eaa657..3e203ae314a8af99d6fe59b3d345b7a125f3c13f 100644 (file)
@@ -24,7 +24,7 @@ function FprintManager() {
     try {
         self.init(null);
     } catch (e) {
-        log('Failed to connect to Fprint service: ' + e.message);
+        log(`Failed to connect to Fprint service: ${e.message}`);
         return null;
     }
 
index 9412bc2db291498bc19c3946f2f725ecc890e837..da5ed912c4e616ee1724672b782107ed649b0449 100644 (file)
@@ -406,13 +406,13 @@ var LoginDialog = GObject.registerClass({
 
         this._settings = new Gio.Settings({ schema_id: GdmUtil.LOGIN_SCREEN_SCHEMA });
 
-        this._settings.connect('changed::' + GdmUtil.BANNER_MESSAGE_KEY,
+        this._settings.connect(`changed::${GdmUtil.BANNER_MESSAGE_KEY}`,
                                this._updateBanner.bind(this));
-        this._settings.connect('changed::' + GdmUtil.BANNER_MESSAGE_TEXT_KEY,
+        this._settings.connect(`changed::${GdmUtil.BANNER_MESSAGE_TEXT_KEY}`,
                                this._updateBanner.bind(this));
-        this._settings.connect('changed::' + GdmUtil.DISABLE_USER_LIST_KEY,
+        this._settings.connect(`changed::${GdmUtil.DISABLE_USER_LIST_KEY}`,
                                this._updateDisableUserList.bind(this));
-        this._settings.connect('changed::' + GdmUtil.LOGO_KEY,
+        this._settings.connect(`changed::${GdmUtil.LOGO_KEY}`,
                                this._updateLogo.bind(this));
 
         this._textureCache = St.TextureCache.get_default();
index 908f9fd384581a2393280642fe2d553f887bdbdf..7e87433337726743c50a5eabf588ff89f83e2c32 100644 (file)
@@ -173,25 +173,25 @@ function createExtensionObject(uuid, dir, type) {
         if (metadataContents instanceof Uint8Array)
             metadataContents = imports.byteArray.toString(metadataContents);
     } catch (e) {
-        throw new Error('Failed to load metadata.json: ' + e);
+        throw new Error(`Failed to load metadata.json: ${e}`);
     }
     let meta;
     try {
         meta = JSON.parse(metadataContents);
     } catch (e) {
-        throw new Error('Failed to parse metadata.json: ' + e);
+        throw new Error(`Failed to parse metadata.json: ${e}`);
     }
 
     let requiredProperties = ['uuid', 'name', 'description', 'shell-version'];
     for (let i = 0; i < requiredProperties.length; i++) {
         let prop = requiredProperties[i];
         if (!meta[prop]) {
-            throw new Error('missing "' + prop + '" property in metadata.json');
+            throw new Error(`missing "${prop}" property in metadata.json`);
         }
     }
 
     if (uuid != meta.uuid) {
-        throw new Error('uuid "' + meta.uuid + '" from metadata.json does not match directory name "' + uuid + '"');
+        throw new Error(`uuid "${meta.uuid}" from metadata.json does not match directory name "${uuid}"`);
     }
 
     let extension = {};
index 8f2b94d957b15fbdccfd7f2685247fa05509e8bb..06ad76eaa319065616ec3da00b9290c9624c508a 100644 (file)
@@ -90,7 +90,7 @@ function loadInterfaceXML(iface) {
         else
             xml = bytes.toString();
     } catch (e) {
-        log('Failed to load D-Bus interface ' + iface);
+        log(`Failed to load D-Bus interface ${iface}`);
     }
 
     return xml;
index 3719e9c6cb0d059db6c7b4bcdbb48444abbd9b24..092c640606ed276fa79191f64b8852511abd58d4 100644 (file)
@@ -18,7 +18,7 @@ var HistoryManager = class {
         this._historyIndex = 0;
         if (this._key) {
             this._history = global.settings.get_strv(this._key);
-            global.settings.connect('changed::' + this._key,
+            global.settings.connect(`changed::${this._key}`,
                                     this._historyChanged.bind(this));
 
         } else {
index 5a0d2906af282b4742084dad80f8d2bc1f3193cc..362c4cbf33cf4df101fe25d1d9605341f68f744e 100644 (file)
@@ -63,7 +63,7 @@ var IBusManager = class {
             Gio.Subprocess.new(['ibus-daemon', '--xim', '--panel', 'disable'],
                                Gio.SubprocessFlags.NONE);
         } catch (e) {
-            log('Failed to launch ibus-daemon: ' + e.message);
+            log(`Failed to launch ibus-daemon: ${e.message}`);
         }
     }
 
index 3699a21e556050e570d041168a1a2fb7c2946bcd..29bb2d4e2b9300803b418365ac74783104fa37a6 100644 (file)
@@ -262,7 +262,7 @@ class InputMethod extends Clutter.InputMethod {
                                                       let retval = context.process_key_event_async_finish(res);
                                                       this.notify_key_event(event, retval);
                                                   } catch (e) {
-                                                      log('Error processing key on IM: ' + e.message);
+                                                      log(`Error processing key on IM: ${e.message}`);
                                                   }
                                               });
         return true;
index d4ea6abad41f9fb43b391dcb2236f7c30432c74a..3743c4da7fdd338767034c6b0700000e7b4c015e 100644 (file)
@@ -93,7 +93,7 @@ var ObjectManager = class {
             try {
                 initable.init_finish(result);
             } catch (e) {
-                logError(e, 'could not initialize proxy for interface ' + interfaceName);
+                logError(e, `could not initialize proxy for interface ${interfaceName}`);
 
                 if (onFinished)
                     onFinished();
@@ -155,7 +155,7 @@ var ObjectManager = class {
         try {
             initable.init_finish(result);
         } catch (e) {
-            logError(e, 'could not initialize object manager for object ' + this._serviceName);
+            logError(e, `could not initialize object manager for object ${this._serviceName}`);
 
             this._tryToCompleteLoad();
             return;
@@ -193,7 +193,7 @@ var ObjectManager = class {
         this._managerProxy.GetManagedObjectsRemote((result, error) => {
             if (!result) {
                 if (error) {
-                    logError(error, 'could not get remote objects for service ' + this._serviceName + ' path ' + this._managerPath);
+                    logError(error, `could not get remote objects for service ${this._serviceName} path ${this._managerPath}`);
                 }
 
                 this._tryToCompleteLoad();
index cbd9f25673acbaf46f432b549c6019bdba30d365..a5e7939093ffdee6438d227c3ac23d4f6f15a88c 100644 (file)
@@ -151,17 +151,17 @@ const SystemActions = GObject.registerClass({
         this._userManager.connect('user-removed',
                                   () => this._updateMultiUser());
 
-        this._lockdownSettings.connect('changed::' + DISABLE_USER_SWITCH_KEY,
+        this._lockdownSettings.connect(`changed::${DISABLE_USER_SWITCH_KEY}`,
                                        () => this._updateSwitchUser());
-        this._lockdownSettings.connect('changed::' + DISABLE_LOG_OUT_KEY,
+        this._lockdownSettings.connect(`changed::${DISABLE_LOG_OUT_KEY}`,
                                        () => this._updateLogout());
-        global.settings.connect('changed::' + ALWAYS_SHOW_LOG_OUT_KEY,
+        global.settings.connect(`changed::${ALWAYS_SHOW_LOG_OUT_KEY}`,
                                 () => this._updateLogout());
 
-        this._lockdownSettings.connect('changed::' + DISABLE_LOCK_SCREEN_KEY,
+        this._lockdownSettings.connect(`changed::${DISABLE_LOCK_SCREEN_KEY}`,
                                        () => this._updateLockScreen());
 
-        this._lockdownSettings.connect('changed::' + DISABLE_LOG_OUT_KEY,
+        this._lockdownSettings.connect(`changed::${DISABLE_LOG_OUT_KEY}`,
                                        () => this._updateHaveShutdown());
 
         this.forceUpdate();
index 036207cc1f51add5726ced1828c80f792b750db2..b97218e0733fda160184c8ab74ee4bab1d5698f9 100644 (file)
@@ -17,7 +17,7 @@ const _leadingJunk = '[\\s`(\\[{\'\\"<\u00AB\u201C\u2018]';
 const _notTrailingJunk = '[^\\s`!()\\[\\]{};:\'\\".,<>?\u00AB\u00BB\u201C\u201D\u2018\u2019]';
 
 const _urlRegexp = new RegExp(
-    '(^|' + _leadingJunk + ')' +
+    `(^|${_leadingJunk})` +
     '(' +
         '(?:' +
             '(?:http|https|ftp)://' +             // scheme://
@@ -29,12 +29,12 @@ const _urlRegexp = new RegExp(
         '(?:' +                                   // one or more:
             '[^\\s()<>]+' +                       // run of non-space non-()
             '|' +                                 // or
-            _balancedParens +                     // balanced parens
+            `${_balancedParens}` +                // balanced parens
         ')+' +
         '(?:' +                                   // end with:
-            _balancedParens +                     // balanced parens
+            `${_balancedParens}` +                // balanced parens
             '|' +                                 // or
-            _notTrailingJunk +                    // last non-junk char
+            `${_notTrailingJunk}` +               // last non-junk char
         ')' +
     ')', 'gi');
 
@@ -146,7 +146,7 @@ function trySpawnCommandLine(commandLine) {
     } catch (err) {
         // Replace "Error invoking GLib.shell_parse_argv: " with
         // something nicer
-        err.message = err.message.replace(/[^:]*: /, _("Could not parse command:") + "\n");
+        err.message = err.message.replace(/[^:]*: /, `${_("Could not parse command:")}\n`);
         throw err;
     }
 
@@ -466,7 +466,7 @@ var AppSettingsMonitor = class {
         if (!this._settings || handler.id > 0)
             return;
 
-        handler.id = this._settings.connect('changed::' + handler.key,
+        handler.id = this._settings.connect(`changed::${handler.key}`,
                                             handler.callback);
         handler.callback(this._settings, handler.key);
     }
index b1eee3aff69888ca4a9b846754a41fe3e77380a0..486a86050e4b0151fd461b6f818a66fcbe636e69 100644 (file)
@@ -26,7 +26,7 @@ var WeatherClient = class {
         this._weatherAuthorized = false;
         this._permStore = new PermissionStore.PermissionStore((proxy, error) => {
             if (error) {
-                log('Failed to connect to permissionStore: ' + error.message);
+                log(`Failed to connect to permissionStore: ${error.message}`);
                 return;
             }
 
@@ -40,7 +40,7 @@ var WeatherClient = class {
 
             this._permStore.LookupRemote('gnome', 'geolocation', (res, error) => {
                 if (error)
-                    log('Error looking up permission: ' + error.message);
+                    log(`Error looking up permission: ${error.message}`);
 
                 let [perms, data] = error ? [{}, null] : res;
                 let  params = ['gnome', 'geolocation', false, data, perms];
@@ -179,7 +179,7 @@ var WeatherClient = class {
                 try {
                     this._gclueService = Geoclue.Simple.new_finish(res);
                 } catch (e) {
-                    log('Failed to connect to Geoclue2 service: ' + e.message);
+                    log(`Failed to connect to Geoclue2 service: ${e.message}`);
                     this._setLocation(this._mostRecentLocation);
                     return;
                 }
index b0de64f11f7cffffa80131f3683ddaf890d4d4de..1d9fd7ee06234ea1e3abc966f1f8ba0054ee1c07 100644 (file)
@@ -273,7 +273,7 @@ function script_collectTimings(time) {
         else
             median = Math.round((times[len / 2 - 1] + times[len / 2]) / 2);
 
-        METRICS[timing + 'RedrawTime'].value = median;
+        METRICS[`${timing}RedrawTime`].value = median;
     }
 }
 
index 46778739bce8ff8e5ce83fbff63e044d8ebb2574..eca67a7d4006ebe37e350a3a71f5861ef1040445 100644 (file)
@@ -135,7 +135,7 @@ var AccessDialogDBus = class {
         let [handle, appId, parentWindow, title, subtitle, body, options] = params;
         // We probably want to use parentWindow and global.display.focus_window
         // for this check in the future
-        if (appId && appId + '.desktop' != this._windowTracker.focus_app.id) {
+        if (appId && `${appId}.desktop` != this._windowTracker.focus_app.id) {
             invocation.return_error_literal(Gio.DBusError,
                                             Gio.DBusError.ACCESS_DENIED,
                                             'Only the focused app is allowed to show a system access dialog');
index 661b0f98ccd5c6446bdcda986038a5eced67c3fa..78128256dd9430141304b75351a7f1e9368a9bd7 100644 (file)
@@ -151,7 +151,7 @@ class BaseAppView {
         if (this._items[id])
             this._items[id].actor.navigate_focus(null, St.DirectionType.TAB_FORWARD, false);
         else
-            log('No such application ' + id);
+            log(`No such application ${id}`);
     }
 
     selectApp(id) {
index dd1de1fc9bf94961ac335d3555f021ae7e52d3d7..9573dc5ee651657983624ff7243fdb222d065174 100644 (file)
@@ -63,7 +63,7 @@ class AppFavorites {
     constructor() {
         this.FAVORITE_APPS_KEY = 'favorite-apps';
         this._favorites = {};
-        global.settings.connect('changed::' + this.FAVORITE_APPS_KEY, this._onFavsChanged.bind(this));
+        global.settings.connect(`changed::${this.FAVORITE_APPS_KEY}`, this._onFavsChanged.bind(this));
         this.reload();
     }
 
index 06459846ae61d5ff2e9f9ca35294a069584964a9..1b65226807c952d6cbdd05c095f0a32d72abd477 100644 (file)
@@ -114,7 +114,7 @@ var AudioDeviceSelectionDialog = GObject.registerClass({
         let app = Shell.AppSystem.get_default().lookup_app(desktopFile);
 
         if (!app) {
-            log('Settings panel for desktop file ' + desktopFile + ' could not be loaded!');
+            log(`Settings panel for desktop file ${desktopFile} could not be loaded!`);
             return;
         }
 
index ff0816eed655ebbe6d1874a89cfee6a386be58d6..3371004fc3896c77b9c7917326219e54ec543ced 100644 (file)
@@ -17,7 +17,7 @@ var ELLIPSIS_CHAR = '\u2026';
 
 var MESSAGE_ICON_SIZE = -1; // pick up from CSS
 
-var NC_ = (context, str) => context + '\u0004' + str;
+var NC_ = (context, str) => `${context}\u0004${str}`;
 
 function sameYear(dateA, dateB) {
     return (dateA.getYear() == dateB.getYear());
@@ -177,7 +177,7 @@ var DBusEventSource = class DBusEventSource {
                     // about the HasCalendars property and would cause an exception trying
                     // to read it)
                 } else {
-                    log('Error loading calendars: ' + e.message);
+                    log(`Error loading calendars: ${e.message}`);
                     return;
                 }
             }
@@ -319,7 +319,7 @@ var Calendar = class Calendar {
         this._weekStart = Shell.util_get_week_start();
         this._settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.calendar' });
 
-        this._settings.connect('changed::' + SHOW_WEEKDATE_KEY, this._onSettingsChange.bind(this));
+        this._settings.connect(`changed::${SHOW_WEEKDATE_KEY}`, this._onSettingsChange.bind(this));
         this._useWeekdate = this._settings.get_boolean(SHOW_WEEKDATE_KEY);
 
         /**
@@ -580,12 +580,12 @@ var Calendar = class Calendar {
 
             // Hack used in lieu of border-collapse - see gnome-shell.css
             if (row == 2)
-                styleClass = 'calendar-day-top ' + styleClass;
+                styleClass = `calendar-day-top ${styleClass}`;
 
             let leftMost = rtl ? iter.getDay() == (this._weekStart + 6) % 7
                                : iter.getDay() == this._weekStart;
             if (leftMost)
-                styleClass = 'calendar-day-left ' + styleClass;
+                styleClass = `calendar-day-left ${styleClass}`;
 
             if (sameDay(now, iter))
                 styleClass += ' calendar-today';
index db5400f5d737a0a0cf949bfe390e9fbc2b46f80c..4d9d61b029d9731ac3e2115c74c77b17f167d0ee 100644 (file)
@@ -114,7 +114,7 @@ var AutomountManager = class {
                     try {
                         drive.stop_finish(res);
                     } catch (e) {
-                        log("Unable to stop the drive after drive-eject-button " + e.toString());
+                        log(`Unable to stop the drive after drive-eject-button ${e.toString()}`);
                     }
                 });
         } else if (drive.can_eject()) {
@@ -123,7 +123,7 @@ var AutomountManager = class {
                     try {
                         drive.eject_with_operation_finish(res);
                     } catch (e) {
-                        log("Unable to eject the drive after drive-eject-button " + e.toString());
+                        log(`Unable to eject the drive after drive-eject-button ${e.toString()}`);
                     }
                 });
         }
@@ -211,7 +211,7 @@ var AutomountManager = class {
                 }
 
                 if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.FAILED_HANDLED))
-                    log('Unable to mount volume ' + volume.get_name() + ': ' + e.toString());
+                    log(`Unable to mount volume ${volume.get_name()}: ${e.toString()}`);
                 this._closeOperation(volume);
             }
         }
index 4891e5d953698c649ef50416f6ebe63eea17584e..313edc9a86ef5219188ae298355cc7f93e5b4ab5 100644 (file)
@@ -65,8 +65,7 @@ function startAppForMount(app, mount) {
         retval = app.launch(files, 
                             global.create_app_launch_context(0, -1));
     } catch (e) {
-        log('Unable to launch the application ' + app.get_name()
-            + ': ' + e.toString());
+        log(`Unable to launch the application ${app.get_name()}: ${e}`);
     }
 
     return retval;
@@ -107,8 +106,7 @@ var ContentTypeDiscoverer = class {
         try {
             contentTypes = mount.guess_content_type_finish(res);
         } catch (e) {
-            log('Unable to guess content types on added mount ' + mount.get_name()
-                + ': ' + e.toString());
+            log(`Unable to guess content types on added mount ${mount.get_name()}: ${e}`);
         }
 
         if (contentTypes.length) {
index 37352aef8d244e7a1113c116c02b3c242d648ac3..d071190ca6815effb3fc5b6111ac9ec7ad8d3c06 100644 (file)
@@ -216,7 +216,7 @@ class NetworkSecretDialog extends ModalDialog.ModalDialog {
                            validate: this._validateWpaPsk, password: true });
             break;
         case 'none': // static WEP
-            secrets.push({ label: _("Key: "), key: 'wep-key' + wirelessSecuritySetting.wep_tx_keyidx,
+            secrets.push({ label: _("Key: "), key: `wep-key${wirelessSecuritySetting.wep_tx_keyidx}`,
                            value: wirelessSecuritySetting.get_wep_key(wirelessSecuritySetting.wep_tx_keyidx) || '',
                            wep_key_type: wirelessSecuritySetting.wep_key_type,
                            validate: this._validateStaticWep, password: true });
@@ -232,7 +232,7 @@ class NetworkSecretDialog extends ModalDialog.ModalDialog {
             this._get8021xSecrets(secrets);
             break;
         default:
-            log('Invalid wireless key management: ' + wirelessSecuritySetting.key_mgmt);
+            log(`Invalid wireless key management: ${wirelessSecuritySetting.key_mgmt}`);
         }
     }
 
@@ -274,7 +274,7 @@ class NetworkSecretDialog extends ModalDialog.ModalDialog {
                            value: ieee8021xSetting.private_key_password || '', password: true });
             break;
         default:
-            log('Invalid EAP/IEEE802.1x method: ' + ieee8021xSetting.get_eap_method(0));
+            log(`Invalid EAP/IEEE802.1x method: ${ieee8021xSetting.get_eap_method(0)}`);
         }
     }
 
@@ -344,7 +344,7 @@ class NetworkSecretDialog extends ModalDialog.ModalDialog {
             this._getMobileSecrets(content.secrets, connectionType);
             break;
         default:
-            log('Invalid connection type: ' + connectionType);
+            log(`Invalid connection type: ${connectionType}`);
         }
 
         return content;
@@ -588,12 +588,12 @@ var VPNRequestHandler = class {
 
         try {
             vpnSetting.foreach_data_item((key, value) => {
-                this._stdin.write('DATA_KEY=' + key + '\n', null);
-                this._stdin.write('DATA_VAL=' + (value || '') + '\n\n', null);
+                this._stdin.write(`DATA_KEY=${key}\n`, null);
+                this._stdin.write(`DATA_VAL=${value || ''}\n\n`, null);
             });
             vpnSetting.foreach_secret((key, value) => {
-                this._stdin.write('SECRET_KEY=' + key + '\n', null);
-                this._stdin.write('SECRET_VAL=' + (value || '') + '\n\n', null);
+                this._stdin.write(`SECRET_KEY=${key}\n`, null);
+                this._stdin.write(`SECRET_VAL=${value || ''}\n\n`, null);
             });
             this._stdin.write('DONE\n\n', null);
         } catch (e) {
@@ -622,7 +622,7 @@ var NetworkAgent = class {
             let monitor = this._pluginDir.monitor(Gio.FileMonitorFlags.NONE, null);
             monitor.connect('changed', () => this._vpnCacheBuilt = false);
         } catch (e) {
-            log('Failed to create monitor for VPN plugin dir: ' + e.message);
+            log(`Failed to create monitor for VPN plugin dir: ${e.message}`);
         }
 
         this._native.connect('new-request', this._newRequest.bind(this));
@@ -709,7 +709,7 @@ var NetworkAgent = class {
             body = _("A password is required to connect to “%s”.").format(connectionSetting.get_id());
             break;
         default:
-            log('Invalid connection type: ' + connectionType);
+            log(`Invalid connection type: ${connectionType}`);
             this._native.respond(requestId, Shell.NetworkAgentResponse.INTERNAL_ERROR);
             return;
         }
index f228eb90a6dccedbcdd6dded0e4a4a11b9d9c964..4027b480c658777e7e10cca8a0806baf7c99919d 100644 (file)
@@ -38,8 +38,8 @@ var AuthenticationDialog = GObject.registerClass({
         this.contentLayout.add_actor(content);
 
         if (userNames.length > 1) {
-            log('polkitAuthenticationAgent: Received ' + userNames.length +
-                ' identities that can be used for authentication. Only ' +
+            log(`polkitAuthenticationAgent: Received ${userNames.length} ` +
+                'identities that can be used for authentication. Only ' +
                 'considering one.');
         }
 
@@ -180,9 +180,9 @@ var AuthenticationDialog = GObject.registerClass({
             //
             // We could add retrying if this turns out to be a problem
 
-            log('polkitAuthenticationAgent: Failed to show modal dialog.' +
-                ' Dismissing authentication request for action-id ' + this.actionId +
-                ' cookie ' + this._cookie);
+            log('polkitAuthenticationAgent: Failed to show modal dialog. ' +
+                `Dismissing authentication request for action-id ${this.actionId} ` +
+                `cookie ${this._cookie}`);
             this._emitDone(true);
         }
     }
index d431cd25407d3a8e065afa9d6b3397001a2f9a5e..dadca7b4d48ebaf679f741192793bc8ee1cfaed6 100644 (file)
@@ -87,7 +87,7 @@ var TelepathyComponent = class {
         try {
             this._client.register();
         } catch (e) {
-            throw new Error('Couldn\'t register Telepathy client. Error: \n' + e);
+            throw new Error(`Could not register Telepathy client. Error: ${e}`);
         }
 
         if (!this._client.account_manager.is_prepared(Tp.AccountManager.get_feature_quark_core()))
@@ -253,7 +253,7 @@ class TelepathyClient extends Tp.BaseClient {
                 dispatchOp.claim_with_finish(result);
                 this._handlingChannels(account, conn, [channel], false);
             } catch (err) {
-                log('Failed to Claim channel: ' + err);
+                log(`Failed to Claim channel: ${err}`);
             }
         });
 
index c9ff73a21751671c39be69ee14f9e04d7df82afa..a0d32f4dac3e34f807844763c1f4bf649f394f77 100644 (file)
@@ -111,7 +111,7 @@ function init() {
         let base = origToString.call(this);
         try {
             if ('actor' in this && this.actor instanceof Clutter.Actor)
-                return base.replace(/\]$/, ' delegate for ' + this.actor.toString().substring(1));
+                return base.replace(/\]$/, ` delegate for ${this.actor.toString().substring(1)}`);
             else
                 return base;
         } catch (e) {
index 1e6ff6ee3bacce2c14a535c9a6e6a77172313920..c6502d50131f57e399778a467573544b83e71c84 100644 (file)
@@ -10,9 +10,9 @@ const FileUtils = imports.misc.fileUtils;
 const ModalDialog = imports.ui.modalDialog;
 
 var REPOSITORY_URL_BASE = 'https://extensions.gnome.org';
-var REPOSITORY_URL_DOWNLOAD = REPOSITORY_URL_BASE + '/download-extension/%s.shell-extension.zip';
-var REPOSITORY_URL_INFO     = REPOSITORY_URL_BASE + '/extension-info/';
-var REPOSITORY_URL_UPDATE   = REPOSITORY_URL_BASE + '/update-info/';
+var REPOSITORY_URL_DOWNLOAD = `${REPOSITORY_URL_BASE}/download-extension/%s.shell-extension.zip`;
+var REPOSITORY_URL_INFO     = `${REPOSITORY_URL_BASE}/extension-info/`;
+var REPOSITORY_URL_UPDATE   = `${REPOSITORY_URL_BASE}/update-info/`;
 
 let _httpSession;
 
@@ -24,7 +24,7 @@ function installExtension(uuid, invocation) {
 
     _httpSession.queue_message(message, (session, message) => {
         if (message.status_code != Soup.KnownStatusCode.OK) {
-            ExtensionSystem.logExtensionError(uuid, 'downloading info: ' + message.status_code);
+            ExtensionSystem.logExtensionError(uuid, `downloading info: ${message.status_code}`);
             invocation.return_dbus_error('org.gnome.Shell.DownloadInfoError', message.status_code.toString());
             return;
         }
@@ -33,7 +33,7 @@ function installExtension(uuid, invocation) {
         try {
             info = JSON.parse(message.response_body.data);
         } catch (e) {
-            ExtensionSystem.logExtensionError(uuid, 'parsing info: ' + e);
+            ExtensionSystem.logExtensionError(uuid, `parsing info: ${e}`);
             invocation.return_dbus_error('org.gnome.Shell.ParseInfoError', e.toString());
             return;
         }
@@ -220,7 +220,7 @@ class InstallExtensionDialog extends ModalDialog.ModalDialog {
         function errback(code, message) {
             let msg = message ? message.toString() : '';
             log('Error while installing %s: %s (%s)'.format(uuid, code, msg));
-            invocation.return_dbus_error('org.gnome.Shell.' + code, msg);
+            invocation.return_dbus_error(`org.gnome.Shell.${code}`, msg);
         }
 
         function callback() {
index 983d7129e62ce4834ca7e95acb101d369fb8dfd0..7034f3c7c8fb2d0df5200a6b9aa1c0156cafaf93 100644 (file)
@@ -111,7 +111,7 @@ function enableExtension(uuid) {
 
     extensionOrder.push(uuid);
 
-    let stylesheetNames = [global.session_mode + '.css', 'stylesheet.css'];
+    let stylesheetNames = [`${global.session_mode}.css`, 'stylesheet.css'];
     let theme = St.ThemeContext.get_for_stage(global.stage).get_theme();
     for (let i = 0; i < stylesheetNames.length; i++) {
         try {
@@ -313,9 +313,9 @@ function _onVersionValidationChanged() {
 }
 
 function _loadExtensions() {
-    global.settings.connect('changed::' + ENABLED_EXTENSIONS_KEY, onEnabledExtensionsChanged);
-    global.settings.connect('changed::' + DISABLE_USER_EXTENSIONS_KEY, onEnabledExtensionsChanged);
-    global.settings.connect('changed::' + EXTENSION_DISABLE_VERSION_CHECK_KEY, _onVersionValidationChanged);
+    global.settings.connect(`changed::${ENABLED_EXTENSIONS_KEY}`, onEnabledExtensionsChanged);
+    global.settings.connect(`changed::${DISABLE_USER_EXTENSIONS_KEY}`, onEnabledExtensionsChanged);
+    global.settings.connect(`changed::${EXTENSION_DISABLE_VERSION_CHECK_KEY}`, _onVersionValidationChanged);
 
     enabledExtensions = getEnabledExtensions();
 
index 3f8ff93a96ac4b2a54aa7ab11346b5af68faae07..cc70ae514b5b8001e5eb88f50d63c8929c1a788f 100644 (file)
@@ -56,8 +56,8 @@ var FocusCaretTracker = class FocusCaretTracker {
         if (!this._initAtspi() || this._focusListenerRegistered)
             return;
 
-        this._atspiListener.register(STATECHANGED + ':focused');
-        this._atspiListener.register(STATECHANGED + ':selected');
+        this._atspiListener.register(`${STATECHANGED}:focused`);
+        this._atspiListener.register(`${STATECHANGED}:selected`);
         this._focusListenerRegistered = true;
     }
 
@@ -73,8 +73,8 @@ var FocusCaretTracker = class FocusCaretTracker {
         if (!this._focusListenerRegistered)
             return;
 
-        this._atspiListener.deregister(STATECHANGED + ':focused');
-        this._atspiListener.deregister(STATECHANGED + ':selected');
+        this._atspiListener.deregister(`${STATECHANGED}:focused`);
+        this._atspiListener.deregister(`${STATECHANGED}:selected`);
         this._focusListenerRegistered = false;
     }
 
index 6de84002b912fb9afac0cf7432b402a62a343aea..061e367775977aeef95a6637450ddf5ac7dc0b31 100644 (file)
@@ -284,7 +284,7 @@ var Result = class Result {
         this.actor.add(cmdTxt);
         let box = new St.BoxLayout({});
         this.actor.add(box);
-        let resultTxt = new St.Label({ text: 'r(' + index + ') = ' });
+        let resultTxt = new St.Label({ text: `r(${index}) = ` });
         resultTxt.clutter_text.ellipsize = Pango.EllipsizeMode.END;
         box.add(resultTxt);
         let objLink = new ObjLink(this._lookingGlass, o);
@@ -320,7 +320,7 @@ var WindowList = class WindowList {
             box.add(windowLink.actor, { x_align: St.Align.START, x_fill: false });
             let propsBox = new St.BoxLayout({ vertical: true, style: 'padding-left: 6px;' });
             box.add(propsBox);
-            propsBox.add(new St.Label({ text: 'wmclass: ' + metaWindow.get_wm_class() }));
+            propsBox.add(new St.Label({ text: `wmclass: ${metaWindow.get_wm_class()}` }));
             let app = tracker.get_window_app(metaWindow);
             if (app != null && !app.is_window_backed()) {
                 let icon = app.create_icon_texture(22);
@@ -402,7 +402,7 @@ var ObjInspector = class ObjInspector {
                     link = new St.Label({ text: '<error>' });
                 }
                 let hbox = new St.BoxLayout();
-                hbox.add(new St.Label({ text: propName + ': ' }));
+                hbox.add(new St.Label({ text: `${propName}: ` }));
                 hbox.add(link);
                 this._container.add_actor(hbox);
             }
@@ -602,9 +602,9 @@ var Inspector = GObject.registerClass({
             this._target = target;
         this._pointerTarget = target;
 
-        let position = '[inspect x: ' + stageX + ' y: ' + stageY + ']';
+        let position = `[inspect x: ${stageX} y: ${stageY}]`;
         this._displayText.text = '';
-        this._displayText.text = position + ' ' + this._target;
+        this._displayText.text = `${position} ${this._target}`;
 
         this._lookingGlass.setBorderPaintTarget(this._target);
     }
@@ -798,7 +798,7 @@ var LookingGlass = class LookingGlass {
         inspectIcon.connect('button-press-event', () => {
             let inspector = new Inspector(this);
             inspector.connect('target', (i, target, stageX, stageY) => {
-                this._pushResult('inspect(' + Math.round(stageX) + ', ' + Math.round(stageY) + ')', target);
+                this._pushResult(`inspect(${Math.round(stageX)}, ${Math.round(stageY)})`, target);
             });
             inspector.connect('closed', () => {
                 this.actor.show();
@@ -892,9 +892,11 @@ var LookingGlass = class LookingGlass {
         let fontDesc = Pango.FontDescription.from_string(fontName);
         // We ignore everything but size and style; you'd be crazy to set your system-wide
         // monospace font to be bold/oblique/etc. Could easily be added here.
-        this.actor.style =
-            'font-size: ' + fontDesc.get_size() / 1024. + (fontDesc.get_size_is_absolute() ? 'px' : 'pt') + ';'
-            + 'font-family: "' + fontDesc.get_family() + '";';
+        let size = fontDesc.get_size() / 1024.;
+        let unit = fontDesc.get_size_is_absolute() ? 'px' : 'pt';
+        this.actor.style = `
+            font-size: ${size}${unit};
+            font-family: "${fontDesc.get_family()}";`;
     }
 
     setBorderPaintTarget(obj) {
@@ -980,7 +982,7 @@ var LookingGlass = class LookingGlass {
         try {
             resultObj = Function(fullCmd)();
         } catch (e) {
-            resultObj = '<exception ' + e + '>';
+            resultObj = `<exception ${e}>`;
         }
 
         this._pushResult(command, resultObj);
index 2683c3f85f7e5c1b5053e1acc7591d258bd33234..c84fd1a4861ca869a067f845238d8b5375133789 100644 (file)
@@ -500,61 +500,61 @@ var Magnifier = class Magnifier {
     _settingsInit(zoomRegion) {
         this._settings = new Gio.Settings({ schema_id: MAGNIFIER_SCHEMA });
 
-        this._settings.connect('changed::' + SCREEN_POSITION_KEY,
+        this._settings.connect(`changed::${SCREEN_POSITION_KEY}`,
                                this._updateScreenPosition.bind(this));
-        this._settings.connect('changed::' + MAG_FACTOR_KEY,
+        this._settings.connect(`changed::${MAG_FACTOR_KEY}`,
                                this._updateMagFactor.bind(this));
-        this._settings.connect('changed::' + LENS_MODE_KEY,
+        this._settings.connect(`changed::${LENS_MODE_KEY}`,
                                this._updateLensMode.bind(this));
-        this._settings.connect('changed::' + CLAMP_MODE_KEY,
+        this._settings.connect(`changed::${CLAMP_MODE_KEY}`,
                                this._updateClampMode.bind(this));
-        this._settings.connect('changed::' + MOUSE_TRACKING_KEY,
+        this._settings.connect(`changed::${MOUSE_TRACKING_KEY}`,
                                this._updateMouseTrackingMode.bind(this));
-        this._settings.connect('changed::' + FOCUS_TRACKING_KEY,
+        this._settings.connect(`changed::${FOCUS_TRACKING_KEY}`,
                                this._updateFocusTrackingMode.bind(this));
-        this._settings.connect('changed::' + CARET_TRACKING_KEY,
+        this._settings.connect(`changed::${CARET_TRACKING_KEY}`,
                                this._updateCaretTrackingMode.bind(this));
 
-        this._settings.connect('changed::' + INVERT_LIGHTNESS_KEY,
+        this._settings.connect(`changed::${INVERT_LIGHTNESS_KEY}`,
                                this._updateInvertLightness.bind(this));
-        this._settings.connect('changed::' + COLOR_SATURATION_KEY,
+        this._settings.connect(`changed::${COLOR_SATURATION_KEY}`,
                                this._updateColorSaturation.bind(this));
 
-        this._settings.connect('changed::' + BRIGHT_RED_KEY,
+        this._settings.connect(`changed::${BRIGHT_RED_KEY}`,
                                this._updateBrightness.bind(this));
-        this._settings.connect('changed::' + BRIGHT_GREEN_KEY,
+        this._settings.connect(`changed::${BRIGHT_GREEN_KEY}`,
                                this._updateBrightness.bind(this));
-        this._settings.connect('changed::' + BRIGHT_BLUE_KEY,
+        this._settings.connect(`changed::${BRIGHT_BLUE_KEY}`,
                                this._updateBrightness.bind(this));
 
-        this._settings.connect('changed::' + CONTRAST_RED_KEY,
+        this._settings.connect(`changed::${CONTRAST_RED_KEY}`,
                                this._updateContrast.bind(this));
-        this._settings.connect('changed::' + CONTRAST_GREEN_KEY,
+        this._settings.connect(`changed::${CONTRAST_GREEN_KEY}`,
                                this._updateContrast.bind(this));
-        this._settings.connect('changed::' + CONTRAST_BLUE_KEY,
+        this._settings.connect(`changed::${CONTRAST_BLUE_KEY}`,
                                this._updateContrast.bind(this));
 
-        this._settings.connect('changed::' + SHOW_CROSS_HAIRS_KEY, () => {
+        this._settings.connect(`changed::${SHOW_CROSS_HAIRS_KEY}`, () => {
             this.setCrosshairsVisible(this._settings.get_boolean(SHOW_CROSS_HAIRS_KEY));
         });
 
-        this._settings.connect('changed::' + CROSS_HAIRS_THICKNESS_KEY, () => {
+        this._settings.connect(`changed::${CROSS_HAIRS_THICKNESS_KEY}`, () => {
             this.setCrosshairsThickness(this._settings.get_int(CROSS_HAIRS_THICKNESS_KEY));
         });
 
-        this._settings.connect('changed::' + CROSS_HAIRS_COLOR_KEY, () => {
+        this._settings.connect(`changed::${CROSS_HAIRS_COLOR_KEY}`, () => {
             this.setCrosshairsColor(this._settings.get_string(CROSS_HAIRS_COLOR_KEY));
         });
 
-        this._settings.connect('changed::' + CROSS_HAIRS_OPACITY_KEY, () => {
+        this._settings.connect(`changed::${CROSS_HAIRS_OPACITY_KEY}`, () => {
             this.setCrosshairsOpacity(this._settings.get_double(CROSS_HAIRS_OPACITY_KEY));
         });
 
-        this._settings.connect('changed::' + CROSS_HAIRS_LENGTH_KEY, () => {
+        this._settings.connect(`changed::${CROSS_HAIRS_LENGTH_KEY}`, () => {
             this.setCrosshairsLength(this._settings.get_int(CROSS_HAIRS_LENGTH_KEY));
         });
 
-        this._settings.connect('changed::' + CROSS_HAIRS_CLIP_KEY, () => {
+        this._settings.connect(`changed::${CROSS_HAIRS_CLIP_KEY}`, () => {
             this.setCrosshairsClip(this._settings.get_boolean(CROSS_HAIRS_CLIP_KEY));
         });
 
@@ -797,7 +797,7 @@ var ZoomRegion = class ZoomRegion {
         try {
             extents = component.get_extents(Atspi.CoordType.SCREEN);
         } catch (e) {
-            log('Failed to read extents of focused component: ' + e.message);
+            log(`Failed to read extents of focused component: ${e.message}`);
             return;
         }
 
@@ -814,7 +814,7 @@ var ZoomRegion = class ZoomRegion {
         try {
             extents = text.get_character_extents(text.get_caret_offset(), 0);
         } catch (e) {
-            log('Failed to read extents of text caret: ' + e.message);
+            log(`Failed to read extents of text caret: ${e.message}`);
             return;
         }
 
index a287db0e45c753d0252dfa35c6be28bd9eecaee6..872ffe05c62d05db069e30d401e47e2a2d1d8572 100644 (file)
@@ -85,7 +85,7 @@ var ShellMagnifier = class ShellMagnifier {
         let ROI = { x: roi[0], y: roi[1], width: roi[2] - roi[0], height: roi[3] - roi[1] };
         let viewBox = { x: viewPort[0], y: viewPort[1], width: viewPort[2] - viewPort[0], height: viewPort[3] - viewPort[1] };
         let realZoomRegion = Main.magnifier.createZoomRegion(xMagFactor, yMagFactor, ROI, viewBox);
-        let objectPath = ZOOM_SERVICE_PATH + '/zoomer' + _zoomRegionInstanceCount;
+        let objectPath = `${ZOOM_SERVICE_PATH}/zoomer${_zoomRegionInstanceCount}`;
         _zoomRegionInstanceCount++;
 
         let zoomRegionProxy = new ShellMagnifierZoomRegion(objectPath, realZoomRegion);
index ea0a93984fa9f71444ffa6c7eb802bb4ad69b70f..bd522973f576ba8f0100cbaf39342efdd5b71208 100644 (file)
@@ -254,7 +254,7 @@ function _initializeUI() {
         let perfModuleName = GLib.getenv("SHELL_PERF_MODULE");
         if (perfModuleName) {
             let perfOutput = GLib.getenv("SHELL_PERF_OUTPUT");
-            let module = eval('imports.perf.' + perfModuleName + ';');
+            let module = eval(`imports.perf.${perfModuleName};`);
             Scripting.runPerfScript(module, perfOutput);
         }
     });
@@ -390,9 +390,9 @@ function notify(msg, details) {
 function notifyError(msg, details) {
     // Also print to stderr so it's logged somewhere
     if (details)
-        log('error: ' + msg + ': ' + details);
+        log(`error: ${msg}: ${details}`);
     else
-        log('error: ' + msg);
+        log(`error: ${msg}`);
 
     notify(msg, details);
 }
index ba41d6b1aea12f20b710183c8e3724dbeb41dc45..4a0a974b02ba0ec42f18a9b9ab1ea068b289f27a 100644 (file)
@@ -218,14 +218,14 @@ class NotificationApplicationPolicy extends NotificationPolicy {
 
         this._masterSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.notifications' });
         this._settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.notifications.application',
-                                            path: '/org/gnome/desktop/notifications/application/' + this._canonicalId + '/' });
+                                            path: `/org/gnome/desktop/notifications/application/${this._canonicalId}/` });
 
         this._masterSettings.connect('changed', this._changed.bind(this));
         this._settings.connect('changed', this._changed.bind(this));
     }
 
     store() {
-        this._settings.set_string('application-id', this.id + '.desktop');
+        this._settings.set_string('application-id', `${this.id}.desktop`);
 
         let apps = this._masterSettings.get_strv('application-children');
         if (!apps.includes(this._canonicalId)) {
@@ -988,7 +988,7 @@ var MessageTray = class MessageTray {
 
     add(source) {
         if (this.contains(source)) {
-            log('Trying to re-add source ' + source.title);
+            log(`Trying to re-add source ${source.title}`);
             return;
         }
 
index e900bceb8b5a9975ba2f11b2e281c5d099fb248d..0780b93005700479c525cb3e03f597bff6f95163 100644 (file)
@@ -135,7 +135,7 @@ var MprisPlayer = class MprisPlayer {
         // so prefer activating the app via .desktop file if possible
         let app = null;
         if (this._mprisProxy.DesktopEntry) {
-            let desktopId = this._mprisProxy.DesktopEntry + '.desktop';
+            let desktopId = `${this._mprisProxy.DesktopEntry}.desktop`;
             app = Shell.AppSystem.get_default().lookup_app(desktopId);
         }
 
index 77960725ec1c7836acc8f17df75a11f8aee9cd98..17844ca5ece3f0611082ed24d02ef3b183e6b7fd 100644 (file)
@@ -474,7 +474,7 @@ class FdoNotificationDaemonSource extends MessageTray.Source {
             return app;
 
         if (appId) {
-            app = Shell.AppSystem.get_default().lookup_app(appId + '.desktop');
+            app = Shell.AppSystem.get_default().lookup_app(`${appId}.desktop`);
             if (app != null)
                 return app;
         }
@@ -610,7 +610,7 @@ function objectPathFromAppId(appId) {
 }
 
 function getPlatformData() {
-    let startupId = GLib.Variant.new('s', '_TIME' + global.get_current_time());
+    let startupId = GLib.Variant.new('s', `_TIME${global.get_current_time()}`);
     return { "desktop-startup-id": startupId };
 }
 
@@ -623,7 +623,7 @@ class GtkNotificationDaemonAppSource extends MessageTray.Source {
         if (!GLib.Variant.is_object_path(objectPath))
             throw new InvalidAppError();
 
-        let app = Shell.AppSystem.get_default().lookup_app(appId + '.desktop');
+        let app = Shell.AppSystem.get_default().lookup_app(`${appId}.desktop`);
         if (!app)
             throw new InvalidAppError();
 
index 2fc81d3368c44bc22921254ec0dcc1b97435cb74..469b7bf04b44cc4d2d410458eb54447fbb03453c 100644 (file)
@@ -342,7 +342,7 @@ var PadDiagram = GObject.registerClass({
         return ('<?xml version="1.0" encoding="UTF-8" standalone="no"?>' +
                 '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" ' +
                 'xmlns:xi="http://www.w3.org/2001/XInclude" ' +
-                'width="' + this._imageWidth + '" height="' + this._imageHeight + '"> ' +
+                `width="${this._imageWidth}" height="${this._imageHeight}"> ` +
                 '<style type="text/css">');
     }
 
@@ -357,10 +357,10 @@ var PadDiagram = GObject.registerClass({
 
         for (let i = 0; i < this._activeButtons.length; i++) {
             let ch = String.fromCharCode('A'.charCodeAt() + this._activeButtons[i]);
-            css += ('.' + ch + ' { ' +
-                    '  stroke: ' + ACTIVE_COLOR + ' !important; ' +
-                    '  fill: ' + ACTIVE_COLOR + ' !important; ' +
-                    '} ');
+            css += `.${ch} {
+                stroke: ${ACTIVE_COLOR} !important;
+                fill: ${ACTIVE_COLOR} !important;
+            }`;
         }
 
         return css;
@@ -470,12 +470,12 @@ var PadDiagram = GObject.registerClass({
         let leaderPos, leaderSize, pos;
         let found, direction;
 
-        [found, pos] = this._handle.get_position_sub('#' + labelName);
+        [found, pos] = this._handle.get_position_sub(`#${labelName}`);
         if (!found)
             return [false];
 
-        [found, leaderPos] = this._handle.get_position_sub('#' + leaderName);
-        [found, leaderSize] = this._handle.get_dimensions_sub('#' + leaderName);
+        [found, leaderPos] = this._handle.get_position_sub(`#${leaderName}`);
+        [found, leaderSize] = this._handle.get_dimensions_sub(`#${leaderName}`);
         if (!found)
             return [false];
 
@@ -497,8 +497,8 @@ var PadDiagram = GObject.registerClass({
 
     getButtonLabelCoords(button) {
         let ch = String.fromCharCode('A'.charCodeAt() + button);
-        let labelName = 'Label' + ch;
-        let leaderName = 'Leader' + ch;
+        let labelName = `Label${ch}`;
+        let leaderName = `Leader${ch}`;
 
         return this._getItemLabelCoords(labelName, leaderName);
     }
@@ -506,8 +506,8 @@ var PadDiagram = GObject.registerClass({
     getRingLabelCoords(number, dir) {
         let numStr = number > 0 ? (number + 1).toString() : '';
         let dirStr = dir == CW ? 'CW' : 'CCW';
-        let labelName = 'LabelRing' + numStr + dirStr;
-        let leaderName = 'LeaderRing' + numStr + dirStr;
+        let labelName = `LabelRing${numStr}${dirStr}`;
+        let leaderName = `LeaderRing${numStr}${dirStr}`;
 
         return this._getItemLabelCoords(labelName, leaderName);
     }
@@ -515,8 +515,8 @@ var PadDiagram = GObject.registerClass({
     getStripLabelCoords(number, dir) {
         let numStr = number > 0 ? (number + 1).toString() : '';
         let dirStr = dir == UP ? 'Up' : 'Down';
-        let labelName = 'LabelStrip' + numStr + dirStr;
-        let leaderName = 'LeaderStrip' + numStr + dirStr;
+        let labelName = `LabelStrip${numStr}${dirStr}`;
+        let leaderName = `LeaderStrip${numStr}${dirStr}`;
 
         return this._getItemLabelCoords(labelName, leaderName);
     }
@@ -889,7 +889,7 @@ var PadOsd = class {
 
     _startButtonActionEdition(button) {
         let ch = String.fromCharCode('A'.charCodeAt() + button);
-        let key = 'button' + ch;
+        let key = `button${ch}`;
         this._startActionEdition(key, Meta.PadActionType.BUTTON, button);
     }
 
index 1a5d9b95a6b2475af4b79db89969bbc3e8502134..fcb51950f13edfbdf4bd94af2c285425e3719eaf 100644 (file)
@@ -1137,7 +1137,7 @@ class Panel extends St.Widget {
 
     addToStatusArea(role, indicator, position, box) {
         if (this.statusArea[role])
-            throw new Error('Extension point conflict: there is already a status indicator for role ' + role);
+            throw new Error(`Extension point conflict: there is already a status indicator for role ${role}`);
 
         if (!(indicator instanceof PanelMenu.Button))
             throw new TypeError('Status indicator must be an instance of PanelMenu.Button');
index 846a67b84add84716467e10ab08733337b84bdeb..c5edf961715d4f3b3407043d9cd13280a13a1db6 100644 (file)
@@ -501,7 +501,7 @@ var PopupMenuBase = class {
             let app = Shell.AppSystem.get_default().lookup_app(desktopFile);
 
             if (!app) {
-                log('Settings panel for desktop file ' + desktopFile + ' could not be loaded!');
+                log(`Settings panel for desktop file ${desktopFile} could not be loaded!`);
                 return;
             }
 
index 6db79e2a742de97ecc144e2d17c504b75b09cbf8..433cf291e4edb61fce313d35dc7f619285ac5ce0 100644 (file)
@@ -92,7 +92,7 @@ function loadRemoteSearchProviders(searchSettings, callback) {
                 if (!appInfo.should_show())
                     return;
             } catch (e) {
-                log('Ignoring search provider ' + path + ': missing DesktopId');
+                log(`Ignoring search provider ${path}: missing DesktopId`);
                 return;
             }
 
@@ -313,7 +313,7 @@ var RemoteSearchProvider = class {
     launchSearch(terms) {
         // the provider is not compatible with the new version of the interface, launch
         // the app itself but warn so we can catch the error in logs
-        log('Search provider ' + this.appInfo.get_id() + ' does not implement LaunchSearch');
+        log(`Search provider ${this.appInfo.get_id()} does not implement LaunchSearch`);
         this.appInfo.launch([], global.create_app_launch_context(0, -1));
     }
 };
index 211fb225fdc3f0d6393c66cf50c47eb2f703400f..c9371abdaf12309c160df044ed6bee112ecdb700 100644 (file)
@@ -199,7 +199,7 @@ class RunDialog extends ModalDialog.ModalDialog {
                 if (inTerminal) {
                     let exec = this._terminalSettings.get_string(EXEC_KEY);
                     let execArg = this._terminalSettings.get_string(EXEC_ARG_KEY);
-                    command = exec + ' ' + execArg + ' ' + input;
+                    command = `${exec} ${execArg} ${input}`;
                 }
                 Util.trySpawnCommandLine(command);
             } catch (e) {
index 18f98461fb0dba105dfa79039a5f1384a6ef996a..8f4a65d04ab739c90f9c76179ecda6972b74d98a 100644 (file)
@@ -537,10 +537,10 @@ var ScreenShield = class {
         });
 
         this._settings = new Gio.Settings({ schema_id: SCREENSAVER_SCHEMA });
-        this._settings.connect('changed::' + LOCK_ENABLED_KEY, this._syncInhibitor.bind(this));
+        this._settings.connect(`changed::${LOCK_ENABLED_KEY}`, this._syncInhibitor.bind(this));
 
         this._lockSettings = new Gio.Settings({ schema_id: LOCKDOWN_SCHEMA });
-        this._lockSettings.connect('changed::' + DISABLE_LOCK_KEY, this._syncInhibitor.bind(this));
+        this._lockSettings.connect(`changed::${DISABLE_LOCK_KEY}`, this._syncInhibitor.bind(this));
 
         this._isModal = false;
         this._hasLockScreen = false;
index d227b9ef4cab8e00f8a7b5bf897baa67bb106a52..e7dcc39c9311ec78a712593f8fa4b38f37b15060 100644 (file)
@@ -150,7 +150,7 @@ function destroyTestWindows() {
  * within a performance automation script
  */
 function defineScriptEvent(name, description) {
-    Shell.PerfLog.get_default().define_event("script." + name,
+    Shell.PerfLog.get_default().define_event(`script.${name}`,
                                              description,
                                              "");
 }
@@ -163,7 +163,7 @@ function defineScriptEvent(name, description) {
  * previously defined with defineScriptEvent
  */
 function scriptEvent(name) {
-    Shell.PerfLog.get_default().event("script." + name);
+    Shell.PerfLog.get_default().event(`script.${name}`);
 }
 
 /**
@@ -181,7 +181,7 @@ function _collect(scriptModule, outputFile) {
     for (let f in scriptModule) {
         let m = /([A-Za-z]+)_([A-Za-z]+)/.exec(f);
         if (m)
-            eventHandlers[m[1] + "." + m[2]] = scriptModule[f];
+            eventHandlers[`${m[1]}.${m[2]}`] = scriptModule[f];
     }
 
     Shell.PerfLog.get_default().replay(
@@ -224,15 +224,15 @@ function _collect(scriptModule, outputFile) {
             // Extra checks here because JSON.stringify generates
             // invalid JSON for undefined values
             if (metric.description == null) {
-                log("Error: No description found for metric " + name);
+                log(`Error: No description found for metric ${name}`);
                 continue;
             }
             if (metric.units == null) {
-                log("Error: No units found for metric " + name);
+                log(`Error: No units found for metric ${name}`);
                 continue;
             }
             if (metric.value == null) {
-                log("Error: No value found for metric " + name);
+                log(`Error: No value found for metric ${name}`);
                 continue;
             }
 
@@ -241,10 +241,10 @@ function _collect(scriptModule, outputFile) {
             first = false;
 
             Shell.write_string_to_stream(out,
-                                         '{ "name": ' + JSON.stringify(name) + ',\n' +
-                                         '    "description": ' + JSON.stringify(metric.description) + ',\n' +
-                                         '    "units": ' + JSON.stringify(metric.units) + ',\n' +
-                                         '    "value": ' + JSON.stringify(metric.value) + ' }');
+                                         `{ "name": ${JSON.stringify(name)},\n` +
+                                         `    "description": ${JSON.stringify(metric.description)},\n` +
+                                         `    "units": ${JSON.stringify(metric.units)},\n` +
+                                         `    "value": ${JSON.stringify(metric.value)} }`);
         }
         Shell.write_string_to_stream(out, ' ]');
 
@@ -263,8 +263,8 @@ function _collect(scriptModule, outputFile) {
         print ('------------------------------------------------------------');
         for (let i = 0; i < metrics.length; i++) {
             let metric = metrics[i];
-            print ('# ' + scriptModule.METRICS[metric].description);
-            print (metric + ': ' +  scriptModule.METRICS[metric].value + scriptModule.METRICS[metric].units);
+            print (`# ${scriptModule.METRICS[metric].description}`);
+            print (`${metric}: ${scriptModule.METRICS[metric].value}${scriptModule.METRICS[metric].units}`);
         }
         print ('------------------------------------------------------------');
     }
index 6ceee4f039cb3c6c5058a65ad45ef5dc2d7870d4..9d9ca718f5e27272d86c2bae3b6cf19c57718575 100644 (file)
@@ -214,13 +214,13 @@ var SearchResultsBase = class {
                     return;
                 }
                 if (metas.length != metasNeeded.length) {
-                    log('Wrong number of result metas returned by search provider ' + this.provider.id +
-                        ': expected ' + metasNeeded.length + ' but got ' + metas.length);
+                    log(`Wrong number of result metas returned by search provider ${this.provider.id}: ` +
+                        `expected ${metasNeeded.length} but got ${metas.length}`);
                     callback(false);
                     return;
                 }
                 if (metas.some(meta => !meta.name || !meta.id)) {
-                    log('Invalid result meta returned from search provider ' + this.provider.id);
+                    log(`Invalid result meta returned from search provider ${this.provider.id}`);
                     callback(false);
                     return;
                 }
index db6b0be18100f2588a5f610105b0a77cb61b0396..99a3bbb69a2e5ca8bfe56c5af463aae5dccdc208 100644 (file)
@@ -579,7 +579,7 @@ var GnomeShellMountOpHandler = class {
     _setCurrentRequest(invocation, id, type) {
         let oldId = this._currentId;
         let oldType = this._currentType;
-        let requestId = id + '@' + invocation.get_sender();
+        let requestId = `${id}@${invocation.get_sender()}`;
 
         this._clearCurrentRequest(Gio.MountOperationResult.UNHANDLED, {});
 
index 482f7b26158d2365148a410ad78d9eaf5e5c15e9..42e4084199433198bb36645362d12a05d3bcff8f 100644 (file)
@@ -42,7 +42,7 @@ class ATIndicator extends PanelMenu.Button {
         this.add_child(this._hbox);
 
         this._a11ySettings = new Gio.Settings({ schema_id: A11Y_SCHEMA });
-        this._a11ySettings.connect('changed::' + KEY_ALWAYS_SHOW, this._queueSyncMenuVisibility.bind(this));
+        this._a11ySettings.connect(`changed::${KEY_ALWAYS_SHOW}`, this._queueSyncMenuVisibility.bind(this));
 
         let highContrast = this._buildHCItem();
         this.menu.addMenuItem(highContrast);
@@ -117,7 +117,7 @@ class ATIndicator extends PanelMenu.Button {
             settings.is_writable(key),
             enabled => settings.set_boolean(key, enabled));
 
-        settings.connect('changed::' + key, () => {
+        settings.connect(`changed::${key}`, () => {
             widget.setToggleState(settings.get_boolean(key));
 
             this._queueSyncMenuVisibility();
@@ -149,7 +149,7 @@ class ATIndicator extends PanelMenu.Button {
                 }
             });
 
-        interfaceSettings.connect('changed::' + KEY_GTK_THEME, () => {
+        interfaceSettings.connect(`changed::${KEY_GTK_THEME}`, () => {
             let value = interfaceSettings.get_string(KEY_GTK_THEME);
             if (value == HIGH_CONTRAST_THEME) {
                 highContrast.setToggleState(true);
@@ -161,7 +161,7 @@ class ATIndicator extends PanelMenu.Button {
             this._queueSyncMenuVisibility();
         });
 
-        interfaceSettings.connect('changed::' + KEY_ICON_THEME, () => {
+        interfaceSettings.connect(`changed::${KEY_ICON_THEME}`, () => {
             let value = interfaceSettings.get_string(KEY_ICON_THEME);
             if (value != HIGH_CONTRAST_THEME)
                 iconTheme = value;
@@ -185,7 +185,7 @@ class ATIndicator extends PanelMenu.Button {
                     settings.reset(KEY_TEXT_SCALING_FACTOR);
             });
 
-        settings.connect('changed::' + KEY_TEXT_SCALING_FACTOR, () => {
+        settings.connect(`changed::${KEY_TEXT_SCALING_FACTOR}`, () => {
             let factor = settings.get_double(KEY_TEXT_SCALING_FACTOR);
             let active = (factor > 1.0);
             widget.setToggleState(active);
index 170341fa3e896db78203f394edad767703dd245a..abe45192a356b56b6be361e9f8d63a800f2d6d7b 100644 (file)
@@ -44,8 +44,8 @@ class DwellClickIndicator extends PanelMenu.Button {
         this.add_child(this._hbox);
 
         this._a11ySettings = new Gio.Settings({ schema_id: MOUSE_A11Y_SCHEMA });
-        this._a11ySettings.connect('changed::' + KEY_DWELL_CLICK_ENABLED, this._syncMenuVisibility.bind(this));
-        this._a11ySettings.connect('changed::' + KEY_DWELL_MODE, this._syncMenuVisibility.bind(this));
+        this._a11ySettings.connect(`changed::${KEY_DWELL_CLICK_ENABLED}`, this._syncMenuVisibility.bind(this));
+        this._a11ySettings.connect(`changed::${KEY_DWELL_MODE}`, this._syncMenuVisibility.bind(this));
 
         this._deviceManager = Clutter.DeviceManager.get_default();
         this._deviceManager.connect('ptr-a11y-dwell-click-type-changed', this._updateClickType.bind(this));
index 3f73640819e9c1677b7cad62fdbaba7e498973ab..187b59ef7fae8f06fb08aac86de6f7dc3a044c1f 100644 (file)
@@ -60,7 +60,7 @@ var InputSource = class {
             return this.id;
 
         if (engineDesc.variant && engineDesc.variant.length > 0)
-            return engineDesc.layout + '+' + engineDesc.variant;
+            return `${engineDesc.layout}+${engineDesc.variant}`;
         else
             return engineDesc.layout;
     }
@@ -200,7 +200,7 @@ var InputSourceSystemSettings = class extends InputSourceSettings {
                                  try {
                                      props = conn.call_finish(result).deep_unpack()[0];
                                  } catch (e) {
-                                     log('Could not get properties from ' + this._BUS_NAME);
+                                     log(`Could not get properties from ${this._BUS_NAME}`);
                                      return;
                                  }
                                  let layouts = props['X11Layout'].unpack();
@@ -228,7 +228,7 @@ var InputSourceSystemSettings = class extends InputSourceSettings {
         for (let i = 0; i < layouts.length && !!layouts[i]; i++) {
             let id = layouts[i];
             if (variants[i])
-                id += '+' + variants[i];
+                id += `+${variants[i]}`;
             sourcesList.push({ type: INPUT_SOURCE_TYPE_XKB, id: id });
         }
         return sourcesList;
@@ -250,9 +250,9 @@ var InputSourceSessionSettings = class extends InputSourceSettings {
         this._KEY_PER_WINDOW = 'per-window';
 
         this._settings = new Gio.Settings({ schema_id: this._DESKTOP_INPUT_SOURCES_SCHEMA });
-        this._settings.connect('changed::' + this._KEY_INPUT_SOURCES, this._emitInputSourcesChanged.bind(this));
-        this._settings.connect('changed::' + this._KEY_KEYBOARD_OPTIONS, this._emitKeyboardOptionsChanged.bind(this));
-        this._settings.connect('changed::' + this._KEY_PER_WINDOW, this._emitPerWindowChanged.bind(this));
+        this._settings.connect(`changed::${this._KEY_INPUT_SOURCES}`, this._emitInputSourcesChanged.bind(this));
+        this._settings.connect(`changed::${this._KEY_KEYBOARD_OPTIONS}`, this._emitKeyboardOptionsChanged.bind(this));
+        this._settings.connect(`changed::${this._KEY_PER_WINDOW}`, this._emitPerWindowChanged.bind(this));
     }
 
     _getSourcesList(key) {
@@ -1059,7 +1059,7 @@ class InputSourceIndicator extends PanelMenu.Button {
 
         let description = xkbLayout;
         if (xkbVariant.length > 0)
-            description = description + '\t' + xkbVariant;
+            description = `${description}\t${xkbVariant}`;
 
         Util.spawn(['gkbd-keyboard-display', '-l', description]);
     }
index 9392faa74eb82f3fc72dca617b379f55209459fb..19a746a56168c73cfe7f4eae0248a4bda180b879 100644 (file)
@@ -46,9 +46,9 @@ var Indicator = class extends PanelMenu.SystemIndicator {
         super();
 
         this._settings = new Gio.Settings({ schema_id: LOCATION_SCHEMA });
-        this._settings.connect('changed::' + ENABLED,
+        this._settings.connect(`changed::${ENABLED}`,
                                this._onMaxAccuracyLevelChanged.bind(this));
-        this._settings.connect('changed::' + MAX_ACCURACY_LEVEL,
+        this._settings.connect(`changed::${MAX_ACCURACY_LEVEL}`,
                                this._onMaxAccuracyLevelChanged.bind(this));
 
         this._indicator = this._addIndicator();
@@ -241,7 +241,7 @@ var AppAuthorizer = class {
         this._onAuthDone = onAuthDone;
 
         let appSystem = Shell.AppSystem.get_default();
-        this._app = appSystem.lookup_app(this.desktopId + ".desktop");
+        this._app = appSystem.lookup_app(`${this.desktopId}.desktop`);
         if (this._app == null || this._permStoreProxy == null) {
             this._completeAuth();
 
index 3604b056f0b96e7278cf459b59bbf472cbe48d57..1f7f80765a16156fee66415270bd4e42dec25a52 100644 (file)
@@ -579,7 +579,7 @@ var NMDeviceModem = class extends NMConnectionDevice {
     }
 
     _getSignalIcon() {
-        return 'network-cellular-signal-' + signalToIcon(this._mobileDevice.signal_quality) + '-symbolic';
+        return `network-cellular-signal-${signalToIcon(this._mobileDevice.signal_quality)}-symbolic`;
     }
 };
 
@@ -676,7 +676,7 @@ var NMWirelessDialogItem = GObject.registerClass({
         if (this._ap.mode == NM80211Mode.ADHOC)
             return 'network-workgroup-symbolic';
         else
-            return 'network-wireless-signal-' + signalToIcon(this._ap.strength) + '-symbolic';
+            return `network-wireless-signal-${signalToIcon(this._ap.strength)}-symbolic`;
     }
 });
 
@@ -1357,7 +1357,7 @@ var NMDeviceWireless = class {
         }
 
         if (this._canReachInternet())
-            return 'network-wireless-signal-' + signalToIcon(ap.strength) + '-symbolic';
+            return `network-wireless-signal-${signalToIcon(ap.strength)}-symbolic`;
         else
             return 'network-wireless-no-route-symbolic';
     }
@@ -1985,7 +1985,7 @@ var NMApplet = class extends PanelMenu.SystemIndicator {
                 } catch (e) { }
             });
         } else {
-            log('Invalid result from portal helper: ' + result);
+            log(`Invalid result from portal helper: ${result}`);
         }
     }
 
@@ -2020,7 +2020,7 @@ var NMApplet = class extends PanelMenu.SystemIndicator {
             new PortalHelperProxy(Gio.DBus.session, 'org.gnome.Shell.PortalHelper',
                                   '/org/gnome/Shell/PortalHelper', (proxy, error) => {
                                       if (error) {
-                                          log('Error launching the portal helper: ' + error);
+                                          log(`Error launching the portal helper: ${error}`);
                                           return;
                                       }
 
index ca7ed51da93f3527daefd773b7f7ae6b27361c45..cd1c01d86bd62d167be417e83e4bc98537c2685a 100644 (file)
@@ -21,7 +21,7 @@ var Indicator = class extends PanelMenu.SystemIndicator {
         super();
 
         this._desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' });
-        this._desktopSettings.connect('changed::' + SHOW_BATTERY_PERCENTAGE,
+        this._desktopSettings.connect(`changed::${SHOW_BATTERY_PERCENTAGE}`,
                                       this._sync.bind(this));
 
         this._indicator = this._addIndicator();
index 8133c3276f23c50e44eaf2beac4139ceb5fc5def..2a755d463ffd5ddbf0a1e4ca30079465b03d2f94 100644 (file)
@@ -32,7 +32,7 @@ var StreamSlider = class {
         this._slider = new Slider.Slider(0);
 
         this._soundSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.sound' });
-        this._soundSettings.connect('changed::' + ALLOW_AMPLIFIED_VOLUME_KEY, this._amplifySettingsChanged.bind(this));
+        this._soundSettings.connect(`changed::${ALLOW_AMPLIFIED_VOLUME_KEY}`, this._amplifySettingsChanged.bind(this));
         this._amplifySettingsChanged();
 
         this._slider.connect('value-changed', this._sliderChanged.bind(this));
index ebd47517082f9070fa307a3e7629e2f6ed2393e4..f8baee116db06adcb09c74c6faca083ca7f315f1 100644 (file)
@@ -77,8 +77,8 @@ function _resetTweenState(target) {
 function _addHandler(target, params, name, handler) {
     if (params[name]) {
         let oldHandler = params[name];
-        let oldScope = params[name + 'Scope'];
-        let oldParams = params[name + 'Params'];
+        let oldScope = params[`${name}Scope`];
+        let oldParams = params[`${name}Params`];
         let eventScope = oldScope ? oldScope : target;
 
         params[name] = () => {